import numpy as np


def calculate_mae(true_keypoints, predicted_keypoints):
    """
    计算人脸关键点的平均绝对误差（MAE）

    参数:
    true_keypoints (np.array): 真实关键点坐标，形状为 (n, 2)
    predicted_keypoints (np.array): 预测关键点坐标，形状为 (n, 2)

    返回:
    float: MAE值
    """
    # 计算每个关键点的绝对误差
    absolute_errors = np.abs(true_keypoints - predicted_keypoints)

    # 计算所有关键点的平均绝对误差
    mae = np.mean(absolute_errors)

    return mae


# 示例数据
true_keypoints = np.array([[100, 120], [150, 130], [200, 140]])  # 真实关键点
predicted_keypoints = np.array([[105, 118], [148, 132], [195, 138]])  # 预测关键点

# 计算MAE
mae_value = calculate_mae(true_keypoints, predicted_keypoints)
print(f"MAE: {mae_value}")